A number of techniques are known for accelerating input-output (IO) performance of storage systems. Such arrangements may involve the use of various block caching approaches. Unfortunately, conventional block caching can be problematic in a number of different respects. For example, in some conventional systems, block caching is implemented in a Linux kernel or other operating system kernel of an associated host computer or other host device, and is therefore limited in both size and functionality.
Also, block caching can be particularly difficult to implement in shared storage environments, such as share-disk environments or cluster environments. The problems in this context include maintaining coherency in data blocks cached from a shared storage resource as well as recovering from failures.
As a more particular illustration, in one type of cluster environment each of the sites of a multi-site system may replicate file systems associated with the other sites, so as to provide file system recovery capability in the event of failure of one or more of the sites. However, conventional arrangements are often unable to provide active-active data access in both primary and replicated file systems, where “active-active” indicates that both primary and replicated file systems of a given site are mounted as read-write file systems.
Similar problems arise in the above-noted share-disk environments as well as other types of shared storage environments.
Accordingly, there is a need for improvements in block caching techniques, particularly in shared storage environments.